home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagn_r.zip / NUMBERS.SWG / 0050_Binary to Integer.pas < prev    next >
Pascal/Delphi Source File  |  1994-08-24  |  3KB  |  80 lines

  1. {
  2. Hey, recently, I've developed a binary to integer, and integer to binary,
  3. conversion operations.  This is the fastest way that I know how to write this,
  4. short of assembly (which I do not know at current).  The original code was
  5. much longer, and much slower, yet it worked too, just slower.  If you have any
  6. suggestions, please let me know, I'm curious to see the results.  (And, please
  7. let me know if you find a use for this source.  Right now, I only use it in
  8. one of several units I've written, to view binary files.)
  9.  
  10. My programming style is very organized, so it shouldn't be too hard to follow.
  11.  
  12. ------------------------------ CUT HERE --------------------------------------}
  13.  
  14.  
  15. TYPE
  16.     String8 = String[8];     { For Use With The Binary Conversion }
  17.     String16 = String[16];   { For Use With The Binary Conversion }
  18.  
  19.     Conversions = Object
  20.         Function Bin8ToInt ( X : String ) : Integer;
  21.         Procedure IntToBin8 ( X : Integer; VAR Binary8 : String8 );
  22.         End;                                            { OBJECT Conversions }
  23.  
  24. { I only use OOP because it sits in a unit.  For a normal program, or an     }
  25. { easy to use unit, you don't even need these three lines.  I have more      }
  26. { conversion subprograms added to this object, which is why I have an        }
  27. { individual object for the conversion subprograms.                          }
  28.  
  29. CONST
  30.      Bits8 : Array [1..8] of Integer = (128, 64, 32, 16, 8, 4, 2, 1);
  31.  
  32. { This defines a normal 8 bits.  I have a Bin16toInt and IntToBin16          }
  33. { procedure and function, retrorespectively, but I think that they do not    }
  34. { have any use to them.                                                      }
  35.  
  36. {────────────────────────────────────────────────────────────────────────────}
  37.  
  38. Function Conversions.Bin8ToInt ( X : String ) : Integer;
  39.  
  40. { Purpose : Converts an 8-bit Binary "Number" to an Integer.                 }
  41. {           The 8-bit "Number" is really an 8-character string, or at least  }
  42. {           it should be.                                                    }
  43.  
  44. VAR
  45.    G, Total : Integer;
  46.  
  47. Begin
  48.      Total := 0;
  49.      For G := 1 to 8 Do
  50.          If ( X[G] = '1' ) then
  51.             Total := Total + Bits8[G];
  52.      Bin8ToInt := Total;
  53.  
  54. End;                                        { FUNCTION Conversions.Bin8ToInt }
  55. {────────────────────────────────────────────────────────────────────────────}
  56.  
  57. Procedure Conversions.IntToBin8 ( X : Integer;
  58.                                   VAR Binary8 : String8 );
  59.  
  60. { Purpose : Converts an integer (from 1 to 256) to an 8-bit Binary "integer."}
  61. {           The 8-bit "integer" is actually a string, easily convertable to  }
  62. {           an integer.                                                      }
  63.  
  64. VAR
  65.    G : Integer;
  66.  
  67. Begin
  68.      Binary8 := '00000000';
  69.      For G := 1 to 8 Do
  70.          If ( X >= Bits8[G] ) Then
  71.             Begin
  72.                  X := X - Bits8[G];
  73.                  Binary8[G] := '1';
  74.                  End;
  75.      If ( X > 0 ) Then
  76.         Binary8 := 'ERROR';
  77.  
  78. End;                                       { PROCEDURE Conversions.IntToBin8 }
  79. {────────────────────────────────────────────────────────────────────────────}
  80.